import request from '@/request.js';
import qs from "qs"

let url = signurl

function getwxSin(str) {
        return request({
                url: "/api/admin/EnterpriseWinXin/sha1?" + str,
                method: 'get',
        })
}

let handle;

//配置企业微信权限
function appWXAgentconfig() {
        let noncestr = "QYWX" + (new Date()).getTime()
        let timestamp = Date.parse(new Date()).toString().substr(0, 10);
        let fi = `noncestr=${noncestr}&timestamp=${timestamp}&url=${url}&type=agent_config`
        console.warn("第二次请求")

        getwxSin(fi).then(res => {
                console.log("第二回" + JSON.stringify(res));
                let { msg } = res;
                let signature = msg;
                wx.agentConfig({
                        corpid: window.appId, // 必填，企业微信的corpid，必须与当前登录的企业一致
                        agentid: window.agentid, // 必填，企业微信的应用id （e.g. 1000247）
                        timestamp: timestamp, // 必填，生成签名的时间戳
                        nonceStr: noncestr, // 必填，生成签名的随机串
                        signature: signature, // 必填，签名，见附录-JS-SDK使用权限签名算法
                        jsApiList: ['getCurExternalContact', 'shareAppMessage', 'sendChatMessage'], //必填，传入需要使用的接口名称
                        success: function (res) {
                                // 回调
                                console.log("***********************");
                                console.log("第二次成功 wx.agentConfig" + res);
                                console.log("***********************");
                                if (handle) {
                                        handle(true)
                                }
                        },
                        fail: function (res) {
                                sessionStorage.setItem("002", JSON.stringify(res))
                                console.error("***********************");
                                console.error("第二次失败 wx.agentConfig" + JSON.stringify(res));
                                console.error("第二次失败 wx.agentConfig" + res);
                                console.error("***********************");
                                if (handle) {
                                        handle(false)
                                }
                                if (res.errMsg.indexOf('function not exist') > -1) {
                                        alert('版本过低请升级')
                                }
                        }
                });
        }).catch(e => {
                console.log("***********************");
                console.log("第二次错误" + e);
                console.log("***********************");
        })
}

function genSinCallBack() {
        let noncestr = "QYWX" + (new Date()).getTime()
        let timestamp = Date.parse(new Date()).toString().substr(0, 10);
        let fi = `noncestr=${noncestr}&timestamp=${timestamp}&url=${url}&type=`
        getwxSin(fi).then(res => {
                console.log("第一回" + JSON.stringify(res));
                let { msg } = res;
                let signature = msg;
                // 注入微信jssdk权限验证配置
                let con = {
                        beta: true, // 必须这么写，否则wx.invoke调用形式的jsapi会有问题
                        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                        appId: window.appId, //$store.state.corpId, // 必填，企业微信的corpID
                        timestamp: timestamp, // 必填，生成签名的时间戳
                        nonceStr: noncestr, // 必填，生成签名的随机串
                        signature: signature, // 必填，签名，见附录1
                        jsApiList: ['invoke'], // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
                }

                wx.config(con);

                wx.ready(function () {
                        console.log("***********************");
                        console.log("第一次ok wx.ready");
                        console.log("***********************");
                        appWXAgentconfig()
                });

                wx.error(function (res) {
                        sessionStorage.setItem("001", JSON.stringify(res))
                        console.log("***********************");
                        console.log("第一次失败" + JSON.stringify(res));
                        console.log("***********************");
                        if (handle) {
                                handle(false)
                        }
                });
        }).catch(e => {
                console.log("***********************");
                console.log("第一次错误" + e);
                console.log("***********************");

        })
}

export default function initwxsdk(callback) {
        handle = callback;
        genSinCallBack()
}

